package com.note.feng.leetcode.algorithms.easy.six;

public class SixHundredSeventyFour {
    /**
     * 674 最长连续递增序列
     * 给定一个未经排序的整数数组，找到最长且 连续递增的子序列，并返回该序列的长度。
     *
     * 连续递增的子序列 可以由两个下标 l 和 r（l < r）确定，如果对于每个 l <= i < r，都有 nums[i] < nums[i + 1] ，
     * 那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。
     *
     * 示例 1：
     *
     * 输入：nums = [1,3,5,4,7]
     * 输出：3
     * 解释：最长连续递增序列是 [1,3,5], 长度为3。
     * 尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的，因为 5 和 7 在原数组里被 4 隔开。
     * 示例 2：
     *
     * 输入：nums = [2,2,2,2,2]
     * 输出：1
     * 解释：最长连续递增序列是 [2], 长度为1。
     *  
     * 提示：
     *
     * 1 <= nums.length <= 104
     * -109 <= nums[i] <= 109
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode.cn/problems/longest-continuous-increasing-subsequence
     */
    /**
     * 解法：贪心
     * 依题意，最小连续递增序列是 1，所以 max 初始值为 1；
     * left，right 左右指针分别记录连续子序列的两端，他们的差（需要 + 1）就是连续序列的长度
     * 遍历数组，找到所有的连续序列，并计算出最大值
     * @param nums
     * @return
     */
    public int findLengthOfLCIS(int[] nums) {
        int max = 1,left = 0,right = 0;
        for (int i = 1; i < nums.length; i++) {
            if(nums[i] <= nums[i - 1]){
                max = Math.max(max, right - left + 1);
                left = i;
                right = i;
            }else{
               right ++;
            }
        }
        return max;
    }
}
